ithome參考資料1:MDN — the Mozilla Developer Network
參考資料2:從ES6開始的JavaScript學習生活
參考資料3:Fooish 程式技術
三種邏輯運算符:
&&: 符號左右都是true才會得到true;其中任一方false,則得到false。||:符號左右任一方為true,得到true;兩方都false,才會得到false。!:原本是true,經!轉換會變成false
!!(xxx) 可以當Boolean(xxx)用!!'false' == !!'true' // true 經過!!轉換,兩個值都是Boolean,且字串總是ture
!!'false' === !!'true' // true 即便使用嚴格比較===也是true,理由同上
哪些資料類型經ToBoolean會轉換成falsy?
Undefined
Null
0, -0, NaN
"" or ''
Boolean("false"); // true
Boolean("0"); // true
Boolean(-0); // false
Boolean("''''"); // true
Boolean(''); // false
const arr = [1, 2, 3, null, 'a', 0]
arr.filter(Boolean) // [1, 2, 3, 'a'] null跟0都是falsy,因此被清掉了
arr // arr = [1, 2, 3, null, 'a', 0]陣列只是複製,沒有被改變 (immutable)
短路求值(Short-circuit)
&&)、(||)也稱為短路求值(Short-circuit)運算符||)運算時,如果第1個運算子為"falsy"時,回傳第2個運算子。否則,回傳第1個運算子。&&)運算時,如果第1個運算子為"falsy"時,回傳第1個運算子。否則,直接回傳第2個運算子。剛好跟(||)相反
console.log('foo' || 'bar') // 'foo'
console.log(false || 'bar') // 'bar'
console.log(false && 'bar') // false
console.log( 0 || '' || 5 || 'bar') //5
console.log(false || null || '' || 0 || NaN || 'Hello' || undefined) //'Hello'
let a = value || 5 // 5是預設值